package com.example.dine.call.view;

/**
 * IDineCallView接口，定义了DineCall系统视图组件所需的方法。
 */
public interface IDineCallView {

    /**
     * 显示主菜单，并获取用户输入的操作编号。
     *
     * @return 用户输入的操作编号。
     */
    int displayMainMenu();

    /**
     * 顾客取号。
     */
    void customerQueue();

    /**
     * 顾客查询排队信息。
     */
    void customerQueryQueue();

    /**
     * 顾客应答叫号。
     */
    void customerResponse();

    /**
     * 餐厅叫号。
     */
    void restaurantCall();

    /**
     * 餐厅查看排队列表。
     */
    void viewQueueList();

    /**
     * 餐厅查看已叫号列表。
     */
    void viewCalledQueueList();

    /**
     * 餐厅查看餐桌列表。
     */
    void viewTableList();

    /**
     * 餐厅增加餐桌。
     */
    void addTable();

    /**
     * 餐厅删除餐桌。
     */
    void deleteTable();

    /**
     * 解析二维码。
     */
    void parseQRCode();

    /**
     * 退出系统。
     */
    void exitSystem();

    /**
     * 提示文本：请输入操作编号。
     */
    String LABEL_INPUT_OPERATION_NUMBER = "请输入操作编号：";

    /**
     * 正则表达式：0~10之间的某个数字。
     */
    String REGEX_OPERATION_NUMBER = "[0-9]|10";

    /**
     * 提示文本：请输入容纳人数。
     */
    String LABEL_INPUT_CAPACITY = "请输入容纳人数：";

    /**
     * 正则表达式：必须是2/4/8其中的某个值。
     */
    String REGEX_CAPACITY = "[1-8]";

    /**
     * 提示文本：请输入餐桌编号。
     */
    String LABEL_INPUT_TABLE_ID = "请输入餐桌编号：";

    /**
     * 正则表达式：必须纯数字且第1个字符不可为0。
     */
    String REGEX_TABLE_ID = "[1-9]\\d*";

    /**
     * 提示文本：请输入您的排队号码。
     */
    String LABEL_INPUT_QUEUE_NUMBER = "请输入您的排队号码：";

    /**
     * 正则表达式：第1个字符必须是ABC其中的某个，后续部分不超过6位的正整数。
     */
    String REGEX_QUEUE_NUMBER = "[ABC][0-9]{1,6}";

    /**
     * 提示文本：请输入就餐人数。
     */
    String LABEL_INPUT_PARTY_SIZE = "请输入就餐人数：";

    /**
     * 正则表达式：必须是1~8之间的某个值。
     */
    String REGEX_PARTY_SIZE = "[1-8]";

    /**
     * 提示文本：请输入二维码图片路径。
     */
    String LABEL_INPUT_QR_CODE_PATH = "请输入二维码图片路径：";

    /**
     * 正则表达式：必须是.png扩展名的图片文件的路径。
     */
    String REGEX_QR_CODE_PATH = "^.+\\.png$";

}